package com.li.onjava8.concurrent.under.atomic;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * 下面是一个使用 AtomicInteger 实现 SerialNumbers 的例子:
 */
public class AtomicSerialNumbers extends SerialNumbers {
    private AtomicInteger serialNumber = new AtomicInteger();

    public synchronized int nextSerialNumber() {
        return serialNumber.getAndIncrement();
    }

    public static void main(String[] args) {
        SerialNumberChecker.test(new AtomicSerialNumbers());
    }
}
/**
 * 这些都是对单一字段的简单示例； 当你创建更复杂的类时，你必须确定哪些字段需要保护，在某些情况
 * 下，你可能仍然最后在方法上使用 synchronized 关键字。
 */